package edu.utn.tacs.grupouno.negocio;

import javax.persistence.CascadeType;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.OneToOne;
import javax.xml.bind.annotation.XmlElementRef;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;
import javax.xml.bind.annotation.XmlType;

@Entity
@DiscriminatorValue("rango")
@XmlType
@XmlRootElement
public class RangoValorReferencia extends ValorDeReferencia {
	
	private static final long serialVersionUID = -6264608010356564254L;

	@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
	@XmlElementRef(type=ResultadoNumerico.class, name="valorMinimo")
	protected Resultado valorMinimo;
	
	@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
	@XmlElementRef(type=ResultadoNumerico.class, name="valorMaximo")
	protected Resultado valorMaximo;

	public RangoValorReferencia() {
	}
	
	public RangoValorReferencia(Resultado valorMinimo, Resultado valorMaximo) {
		this.valorMinimo = valorMinimo;
		this.valorMaximo = valorMaximo;
	}
	
	public RangoValorReferencia(int valorMinimo, int ValorMaximo) {
		this.valorMinimo = new ResultadoNumerico(valorMinimo);
		this.valorMaximo = new ResultadoNumerico(ValorMaximo);
	}
	
	@Override
	public boolean isNormal(Resultado resultado) {
		return valorMinimo.compareTo(resultado) <= 0 && valorMaximo.compareTo(resultado) >= 0;
	}

	@XmlTransient
	public Resultado getValorMinimo() {
		return valorMinimo;
	}

	public void setValorMinimo(Resultado valorMinimo) {
		this.valorMinimo = valorMinimo;
	}

	@XmlTransient
	public Resultado getValorMaximo() {
		return valorMaximo;
	}

	public void setValorMaximo(Resultado valorMaximo) {
		this.valorMaximo = valorMaximo;
	}

}
